package com.cloud.lan.service.tx.wx;

import com.cloud.lan.entity.enums.RedisKeyEnum;
import com.cloud.lan.service.impl.RedisService;
import com.cloud.lan.service.tx.wx.config.WxMaConfiguration;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

import lombok.extern.slf4j.Slf4j;

/**
 * WxAccessToken 组装类
 * @author ErKang
 * @date Created in 2022/1/19 22:33
 * @title WxAccessTokenService.java
 * Department: Product development
 */
@Slf4j
@Service
public class WxAccessTokenService {

    @Resource
    RedisService redisService;
    //    @Resource
//    RedisClient redisClient;
    @Resource
    WxMaConfiguration wxMaConfiguration;

//    public String getToken(String appId) {
//        String token = get(appId);
//        if (StrUtil.isEmpty(get(appId))) {
//
//        }
//        final String key = RedisKeyEnum.WX_API_ACCESS_TOKEN.key(appId);
//        try {
//            if (redisClient.lock(key)) {
//                if (!isNull(token)) {
//                    redisClient.unLock(key);
//                    return token;
//                }
//                // 调用微信API获取accessToken并塞入缓存
//                // 微信API获取AT有上限，防止一直调用触发上限导致服务不可用，待加入流控
////                atModel = invokeWxToken(wxApp);
//                WxMaService wxService = wxMaConfiguration.getMaService(appId);
//                add(appId, wxService.getAccessToken());
//                redisClient.unLock(key);
//                return wxService.getAccessToken();
//            }
//        } catch (Exception e) {
//            log.error("#getToken  错误 :", e);
//        } finally {
//            redisClient.unLock(key);
//        }
//        return null;
//    }

    public Boolean add(String appId, String accessToken) {
        String key = RedisKeyEnum.WX_API_ACCESS_TOKEN.key(appId);
        return redisService.setCommonEx(key, 6200, accessToken);
    }

    public String get(String appId) {
        String key = RedisKeyEnum.WX_API_ACCESS_TOKEN.key(appId);
        return redisService.getCommonRedis(key);
    }
}
